Skip to main content
WebsiteGitHub last commitGitHub commit activityGitHub IssuesDocker PullsDiscordLocalized

docker-compose.yaml

name: media-management

services:

# Server
jellyfin:
image: jellyfin/jellyfin:latest
container_name: jellyfin
user: 1000:1000
networks:
- media-network
ports:
- 8096:8096/tcp
- 7359:7359/udp
volumes:
- jellyfin-config:/config
- jellyfin-cache:/cache
- type: bind
source: /media/merged
target: /media
read_only: false
# Optional - extra fonts to be used during transcoding with subtitle burn-in
#- type: bind
# source: /path/to/fonts
# target: /usr/local/share/fonts/custom
# read_only: true
restart: 'unless-stopped'
# Optional - alternative address used for autodiscovery
# environment:
# - JELLYFIN_PublishedServerUrl=http://example.com
runtime: nvidia
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]

# Core Services
prowlarr:
image: lscr.io/linuxserver/prowlarr:latest
container_name: prowlarr
hostname: prowlarr
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
volumes:
- ./prowlarr:/config
logging:
options:
max-size: "10m"
max-file: "3"
networks:
- media-network
ports:
- 9696:9696
restart: unless-stopped

qbittorrent-vpn:
image: binhex/arch-qbittorrentvpn
container_name: qbittorrent-vpn
cap_add:
- NET_ADMIN
networks:
- media-network
ports:
- "8085:8085" # WebUI port (changed from 8080 due to CSRF issues)
- "6881:6881/tcp" # BitTorrent port
- "6881:6881/udp" # BitTorrent port
environment:
- VPN_ENABLED=yes
- VPN_PROV=nordvpn # VPN provider
- VPN_CLIENT=openvpn # VPN client type
- VPN_USER=your-nordvpn-username # Replace with your credentials
- VPN_PASS=your-nordvpn-password # Replace with your credentials
- VPN_OPTIONS=
- LAN_NETWORK=192.168.1.0/24,192.168.9.0/24 # Your network subnets
- NAME_SERVERS=1.1.1.1,1.0.0.1
- PUID=1000
- PGID=1000
- WEBUI_PORT=8085 # Must match container port
volumes:
- ./qbittorrent/config:/config
- /media/merged:/media # Media directory
- /media/server/Processing:/processing # Processing directory
restart: unless-stopped
labels:
- "com.centurylinklabs.watchtower.enable=true"

sabnzbd:
image: lscr.io/linuxserver/sabnzbd:latest
container_name: sabnzbd
hostname: sabnzbd
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
volumes:
- ./sabnzbd/config:/config
- /media/merged:/media # Media directory
- /media/server/Processing:/processing # Processing directory
networks:
- media-network
ports:
- 8065:8080
restart: unless-stopped
logging:
options:
max-size: "10m"
max-file: "3"
labels:
- "com.centurylinklabs.watchtower.enable=true"

# Media Management Services
radarr:
image: lscr.io/linuxserver/radarr:latest
container_name: radarr
hostname: radarr
depends_on:
- prowlarr
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
volumes:
- ./radarr:/config
- /media/merged:/media # Media directory
- /media/server/Processing:/processing # Processing directory
logging:
options:
max-size: "10m"
max-file: "3"
networks:
- media-network
ports:
- 7878:7878
restart: unless-stopped

readarr:
image: lscr.io/linuxserver/readarr:develop
container_name: readarr
depends_on:
- prowlarr
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
volumes:
- ./readarr:/config
- /media/merged:/media # Media directory
- /media/server/Processing:/processing # Processing directory
networks:
- media-network
ports:
- 8787:8787
restart: unless-stopped

sonarr:
image: lscr.io/linuxserver/sonarr:latest
container_name: sonarr
hostname: sonarr
depends_on:
- prowlarr
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
volumes:
- ./sonarr:/config
- /media/merged:/media # Media directory
- /media/server/Processing:/processing # Processing directory
logging:
options:
max-size: "10m"
max-file: "3"
networks:
- media-network
ports:
- 8989:8989
restart: unless-stopped

lidarr:
image: lscr.io/linuxserver/lidarr:latest
container_name: lidarr
hostname: lidarr
depends_on:
- prowlarr
environment:
- PUID=1000
- PGID=1000
- TZ=America/New_York
volumes:
- ./lidarr/config:/config
- /media/merged:/merged # Media directory
- /media/server/Processing:/processing # Processing directory
networks:
- media-network
ports:
- 8686:8686
restart: unless-stopped

jellyseerr:
image: fallenbagel/jellyseerr:latest
container_name: jellyseerr
hostname: jellyseerr
environment:
- LOG_LEVEL=debug
- TZ=America/New_York
networks:
- media-network
ports:
- 5055:5055
volumes:
- ./jellyseerr/config:/app/config
logging:
options:
max-size: "10m"
max-file: "3"
restart: unless-stopped

networks:
media-network:
driver: bridge

volumes:
jellyfin-config:
jellyfin-cache:
Buy me a beer

Changelog

fix: update docker-compose configuration for jellyfin service with additional settings and volume mappings
Add Flaresolverr service to docker-compose example
Fix docker-compose volume mappings and dependencies
Update media flow example to include Usenet and mergerfs integration


💬 Discord Community Chat

Join the conversation! Comments here sync with our Discord community.

💬 Recent Comments

Loading comments...